import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui'

// 创建axios实例对象
const service = axios.create({
    baseURL: process.env.VUE_APP_BASE_API,
    timeout: 10000
})
// 请求拦截器
service.interceptors.request.use(
    config => {
        // 每个请求接口的公共参数
        config.headers.Authorization = 'Bearer ' + store.state.user.token;
        return config;
    },
    error => {
        // 可以提示请求出错
        return Promise.reject(error);
    })

// 响应拦截器
service.interceptors.response.use(
    res => {
        // 成功响应数据
        if (res.data.code === 0) return res.data;
        // 异常提示错误信息
        // 如果有特殊异常需要处理的，也可以添加处理
        // if (res.data.code === 4103) {
        //     // 强制跳转登录页
        // }
        res.message = res.data.msg;
        Message.warning(res.message)
        // 阻止继续向下执行
        return Promise.reject(res.message || 'Error')
    },
    error => {
        if (error && error.response) {
            switch (error.response.status) {
                case 400:
                    error.message = '请求错误'
                    break;
                case 401:
                    error.message = '请求未授权，请重新登录'
                    break;
                case 403:
                    error.message = '请求资源的访问被服务器拒绝'
                    break;
                case 404:
                    error.message = '请求错误,未找到该资源'
                    break;
                case 408:
                    error.message = '请求超时'
                    break;
                case 500:
                    error.message = '服务器错误'
                    break;
                case 501:
                    error.message = '网络未实现'
                    break;
                case 502:
                    error.message = '网络错误'
                    break;
                case 503:
                    error.message = '服务不可用'
                    break;
                case 504:
                    error.message = '网络超时'
                    break;
                case 505:
                    error.message = 'http版本不支持该请求'
                    break;
                default:
                    error.message = `连接错误${error.response.status}`
            }
        } else {
            error.message = "连接到服务器失败"
        }
        Message.error(error.message) // 错误信息提示
    })

export default service
